/*
Copyright (C) 1997-2001 Id Software, Inc.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
// m_flash.c

#include "shared/shared.h"

// this file is included in both the game dll and quake2 },
// the game needs it to source shot locations, the client
// needs it to position muzzle flashes
const vec3_t monster_flash_offset[256] = {
// flash 0 is not used
    { 0.0, 0.0, 0.0 },

// MZ2_TANK_BLASTER_1               1
    { 20.7, -18.5, 28.7 },
// MZ2_TANK_BLASTER_2               2
    { 16.6, -21.5, 30.1 },
// MZ2_TANK_BLASTER_3               3
    { 11.8, -23.9, 32.1 },
// MZ2_TANK_MACHINEGUN_1            4
    { 22.9, -0.7, 25.3 },
// MZ2_TANK_MACHINEGUN_2            5
    { 22.2, 6.2, 22.3 },
// MZ2_TANK_MACHINEGUN_3            6
    { 19.4, 13.1, 18.6 },
// MZ2_TANK_MACHINEGUN_4            7
    { 19.4, 18.8, 18.6 },
// MZ2_TANK_MACHINEGUN_5            8
    { 17.9, 25.0, 18.6 },
// MZ2_TANK_MACHINEGUN_6            9
    { 14.1, 30.5, 20.6 },
// MZ2_TANK_MACHINEGUN_7            10
    { 9.3, 35.3, 22.1 },
// MZ2_TANK_MACHINEGUN_8            11
    { 4.7, 38.4, 22.1 },
// MZ2_TANK_MACHINEGUN_9            12
    { -1.1, 40.4, 24.1 },
// MZ2_TANK_MACHINEGUN_10           13
    { -6.5, 41.2, 24.1 },
// MZ2_TANK_MACHINEGUN_11           14
    { 3.2, 40.1, 24.7 },
// MZ2_TANK_MACHINEGUN_12           15
    { 11.7, 36.7, 26.0 },
// MZ2_TANK_MACHINEGUN_13           16
    { 18.9, 31.3, 26.0 },
// MZ2_TANK_MACHINEGUN_14           17
    { 24.4, 24.4, 26.4 },
// MZ2_TANK_MACHINEGUN_15           18
    { 27.1, 17.1, 27.2 },
// MZ2_TANK_MACHINEGUN_16           19
    { 28.5, 9.1, 28.0 },
// MZ2_TANK_MACHINEGUN_17           20
    { 27.1, 2.2, 28.0 },
// MZ2_TANK_MACHINEGUN_18           21
    { 24.9, -2.8, 28.0 },
// MZ2_TANK_MACHINEGUN_19           22
    { 21.6, -7.0, 26.4 },
// MZ2_TANK_ROCKET_1                23
    { 6.2, 29.1, 49.1 },
// MZ2_TANK_ROCKET_2                24
    { 6.9, 23.8, 49.1 },
// MZ2_TANK_ROCKET_3                25
    { 8.3, 17.8, 49.5 },

// MZ2_INFANTRY_MACHINEGUN_1        26
    { 26.6, 7.1, 13.1 },
// MZ2_INFANTRY_MACHINEGUN_2        27
    { 18.2, 7.5, 15.4 },
// MZ2_INFANTRY_MACHINEGUN_3        28
    { 17.2, 10.3, 17.9 },
// MZ2_INFANTRY_MACHINEGUN_4        29
    { 17.0, 12.8, 20.1 },
// MZ2_INFANTRY_MACHINEGUN_5        30
    { 15.1, 14.1, 21.8 },
// MZ2_INFANTRY_MACHINEGUN_6        31
    { 11.8, 17.2, 23.1 },
// MZ2_INFANTRY_MACHINEGUN_7        32
    { 11.4, 20.2, 21.0 },
// MZ2_INFANTRY_MACHINEGUN_8        33
    { 9.0, 23.0, 18.9 },
// MZ2_INFANTRY_MACHINEGUN_9        34
    { 13.9, 18.6, 17.7 },
// MZ2_INFANTRY_MACHINEGUN_10       35
    { 15.4, 15.6, 15.8 },
// MZ2_INFANTRY_MACHINEGUN_11       36
    { 10.2, 15.2, 25.1 },
// MZ2_INFANTRY_MACHINEGUN_12       37
    { -1.9, 15.1, 28.2 },
// MZ2_INFANTRY_MACHINEGUN_13       38
    { -12.4, 13.0, 20.2 },

// MZ2_SOLDIER_BLASTER_1            39
    { 10.6 * 1.2, 7.7 * 1.2, 7.8 * 1.2 },
// MZ2_SOLDIER_BLASTER_2            40
    { 21.1 * 1.2, 3.6 * 1.2, 19.0 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_1            41
    { 10.6 * 1.2, 7.7 * 1.2, 7.8 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_2            42
    { 21.1 * 1.2, 3.6 * 1.2, 19.0 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_1         43
    { 10.6 * 1.2, 7.7 * 1.2, 7.8 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_2         44
    { 21.1 * 1.2, 3.6 * 1.2, 19.0 * 1.2 },

// MZ2_GUNNER_MACHINEGUN_1          45
    { 30.1 * 1.15, 3.9 * 1.15, 19.6 * 1.15 },
// MZ2_GUNNER_MACHINEGUN_2          46
    { 29.1 * 1.15, 2.5 * 1.15, 20.7 * 1.15 },
// MZ2_GUNNER_MACHINEGUN_3          47
    { 28.2 * 1.15, 2.5 * 1.15, 22.2 * 1.15 },
// MZ2_GUNNER_MACHINEGUN_4          48
    { 28.2 * 1.15, 3.6 * 1.15, 22.0 * 1.15 },
// MZ2_GUNNER_MACHINEGUN_5          49
    { 26.9 * 1.15, 2.0 * 1.15, 23.4 * 1.15 },
// MZ2_GUNNER_MACHINEGUN_6          50
    { 26.5 * 1.15, 0.6 * 1.15, 20.8 * 1.15 },
// MZ2_GUNNER_MACHINEGUN_7          51
    { 26.9 * 1.15, 0.5 * 1.15, 21.5 * 1.15 },
// MZ2_GUNNER_MACHINEGUN_8          52
    { 29.0 * 1.15, 2.4 * 1.15, 19.5 * 1.15 },
// MZ2_GUNNER_GRENADE_1             53
    { 4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15 },
// MZ2_GUNNER_GRENADE_2             54
    { 4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15 },
// MZ2_GUNNER_GRENADE_3             55
    { 4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15 },
// MZ2_GUNNER_GRENADE_4             56
    { 4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15 },

// MZ2_CHICK_ROCKET_1               57
//  { -24.8, -9.0, 39.0 },
    { 24.8, -9.0, 39.0 },           // PGM - this was incorrect in Q2

// MZ2_FLYER_BLASTER_1              58
    { 12.1, 13.4, -14.5 },
// MZ2_FLYER_BLASTER_2              59
    { 12.1, -7.4, -14.5 },

// MZ2_MEDIC_BLASTER_1              60
    { 12.1, 5.4, 16.5 },

// MZ2_GLADIATOR_RAILGUN_1          61
    { 30.0, 18.0, 28.0 },

// MZ2_HOVER_BLASTER_1              62
    { 32.5, -0.8, 10.0 },

// MZ2_ACTOR_MACHINEGUN_1           63
    { 18.4, 7.4, 9.6 },

// MZ2_SUPERTANK_MACHINEGUN_1       64
    { 30.0, 30.0, 88.5 },
// MZ2_SUPERTANK_MACHINEGUN_2       65
    { 30.0, 30.0, 88.5 },
// MZ2_SUPERTANK_MACHINEGUN_3       66
    { 30.0, 30.0, 88.5 },
// MZ2_SUPERTANK_MACHINEGUN_4       67
    { 30.0, 30.0, 88.5 },
// MZ2_SUPERTANK_MACHINEGUN_5       68
    { 30.0, 30.0, 88.5 },
// MZ2_SUPERTANK_MACHINEGUN_6       69
    { 30.0, 30.0, 88.5 },
// MZ2_SUPERTANK_ROCKET_1           70
    { 16.0, -22.5, 91.2 },
// MZ2_SUPERTANK_ROCKET_2           71
    { 16.0, -33.4, 86.7 },
// MZ2_SUPERTANK_ROCKET_3           72
    { 16.0, -42.8, 83.3 },

// --- Start Xian Stuff ---
// MZ2_BOSS2_MACHINEGUN_L1          73
    { 32,   -40,    70 },
// MZ2_BOSS2_MACHINEGUN_L2          74
    { 32,   -40,    70 },
// MZ2_BOSS2_MACHINEGUN_L3          75
    { 32,   -40,    70 },
// MZ2_BOSS2_MACHINEGUN_L4          76
    { 32,   -40,    70 },
// MZ2_BOSS2_MACHINEGUN_L5          77
    { 32,   -40,    70 },
// --- End Xian Stuff

// MZ2_BOSS2_ROCKET_1               78
    { 22.0, 16.0, 10.0 },
// MZ2_BOSS2_ROCKET_2               79
    { 22.0, 8.0, 10.0 },
// MZ2_BOSS2_ROCKET_3               80
    { 22.0, -8.0, 10.0 },
// MZ2_BOSS2_ROCKET_4               81
    { 22.0, -16.0, 10.0 },

// MZ2_FLOAT_BLASTER_1              82
    { 32.5, -0.8, 10 },

// MZ2_SOLDIER_BLASTER_3            83
    { 20.8 * 1.2, 10.1 * 1.2, -2.7 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_3            84
    { 20.8 * 1.2, 10.1 * 1.2, -2.7 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_3         85
    { 20.8 * 1.2, 10.1 * 1.2, -2.7 * 1.2 },
// MZ2_SOLDIER_BLASTER_4            86
    { 7.6 * 1.2, 9.3 * 1.2, 0.8 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_4            87
    { 7.6 * 1.2, 9.3 * 1.2, 0.8 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_4         88
    { 7.6 * 1.2, 9.3 * 1.2, 0.8 * 1.2 },
// MZ2_SOLDIER_BLASTER_5            89
    { 30.5 * 1.2, 9.9 * 1.2, -18.7 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_5            90
    { 30.5 * 1.2, 9.9 * 1.2, -18.7 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_5         91
    { 30.5 * 1.2, 9.9 * 1.2, -18.7 * 1.2 },
// MZ2_SOLDIER_BLASTER_6            92
    { 27.6 * 1.2, 3.4 * 1.2, -10.4 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_6            93
    { 27.6 * 1.2, 3.4 * 1.2, -10.4 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_6         94
    { 27.6 * 1.2, 3.4 * 1.2, -10.4 * 1.2 },
// MZ2_SOLDIER_BLASTER_7            95
    { 28.9 * 1.2, 4.6 * 1.2, -8.1 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_7            96
    { 28.9 * 1.2, 4.6 * 1.2, -8.1 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_7         97
    { 28.9 * 1.2, 4.6 * 1.2, -8.1 * 1.2 },
// MZ2_SOLDIER_BLASTER_8            98
//  34.5 * 1.2, 9.6 * 1.2, 6.1 * 1.2 },
    { 31.5 * 1.2, 9.6 * 1.2, 10.1 * 1.2 },
// MZ2_SOLDIER_SHOTGUN_8            99
    { 34.5 * 1.2, 9.6 * 1.2, 6.1 * 1.2 },
// MZ2_SOLDIER_MACHINEGUN_8         100
    { 34.5 * 1.2, 9.6 * 1.2, 6.1 * 1.2 },

// --- Xian shit below ---
// MZ2_MAKRON_BFG                   101
    { 17,       -19.5,  62.9 },
// MZ2_MAKRON_BLASTER_1             102
    { -3.6, -24.1,  59.5 },
// MZ2_MAKRON_BLASTER_2             103
    { -1.6, -19.3,  59.5 },
// MZ2_MAKRON_BLASTER_3             104
    { -0.1, -14.4,  59.5 },
// MZ2_MAKRON_BLASTER_4             105
    { 2.0,  -7.6,   59.5 },
// MZ2_MAKRON_BLASTER_5             106
    { 3.4,  1.3,    59.5 },
// MZ2_MAKRON_BLASTER_6             107
    { 3.7,  11.1,   59.5 },
// MZ2_MAKRON_BLASTER_7             108
    { -0.3, 22.3,   59.5 },
// MZ2_MAKRON_BLASTER_8             109
    { -6,       33,     59.5 },
// MZ2_MAKRON_BLASTER_9             110
    { -9.3, 36.4,   59.5 },
// MZ2_MAKRON_BLASTER_10            111
    { -7,       35,     59.5 },
// MZ2_MAKRON_BLASTER_11            112
    { -2.1, 29,     59.5 },
// MZ2_MAKRON_BLASTER_12            113
    { 3.9,  17.3,   59.5 },
// MZ2_MAKRON_BLASTER_13            114
    { 6.1,  5.8,    59.5 },
// MZ2_MAKRON_BLASTER_14            115
    { 5.9,  -4.4,   59.5 },
// MZ2_MAKRON_BLASTER_15            116
    { 4.2,  -14.1,  59.5 },
// MZ2_MAKRON_BLASTER_16            117
    { 2.4,  -18.8,  59.5 },
// MZ2_MAKRON_BLASTER_17            118
    { -1.8, -25.5,  59.5 },
// MZ2_MAKRON_RAILGUN_1             119
    { -17.3,    7.8,    72.4 },

// MZ2_JORG_MACHINEGUN_L1           120
    { 78.5, -47.1,  96 },
// MZ2_JORG_MACHINEGUN_L2           121
    { 78.5, -47.1,  96 },
// MZ2_JORG_MACHINEGUN_L3           122
    { 78.5, -47.1,  96 },
// MZ2_JORG_MACHINEGUN_L4           123
    { 78.5, -47.1,  96 },
// MZ2_JORG_MACHINEGUN_L5           124
    { 78.5, -47.1,  96 },
// MZ2_JORG_MACHINEGUN_L6           125
    { 78.5, -47.1,  96 },
// MZ2_JORG_MACHINEGUN_R1           126
    { 78.5, 46.7,  96 },
// MZ2_JORG_MACHINEGUN_R2           127
    { 78.5, 46.7,   96 },
// MZ2_JORG_MACHINEGUN_R3           128
    { 78.5, 46.7,   96 },
// MZ2_JORG_MACHINEGUN_R4           129
    { 78.5, 46.7,   96 },
// MZ2_JORG_MACHINEGUN_R5           130
    { 78.5, 46.7,   96 },
// MZ2_JORG_MACHINEGUN_R6           131
    { 78.5, 46.7,   96 },
// MZ2_JORG_BFG_1                   132
    { 6.3,  -9,     111.2 },

// MZ2_BOSS2_MACHINEGUN_R1          73
    { 32,   40, 70 },
// MZ2_BOSS2_MACHINEGUN_R2          74
    { 32,   40, 70 },
// MZ2_BOSS2_MACHINEGUN_R3          75
    { 32,   40, 70 },
// MZ2_BOSS2_MACHINEGUN_R4          76
    { 32,   40, 70 },
// MZ2_BOSS2_MACHINEGUN_R5          77
    { 32,   40, 70 },

// --- End Xian Shit ---

// ROGUE
// note that the above really ends at 137
// carrier machineguns
// MZ2_CARRIER_MACHINEGUN_L1
    { 56,   -32, 32 },
// MZ2_CARRIER_MACHINEGUN_R1
    { 56,   32, 32 },
// MZ2_CARRIER_GRENADE
    { 42,   24, 50 },
// MZ2_TURRET_MACHINEGUN            141
    { 16, 0, 0 },
// MZ2_TURRET_ROCKET                142
    { 16, 0, 0 },
// MZ2_TURRET_BLASTER               143
    { 16, 0, 0 },
// MZ2_STALKER_BLASTER              144
    { 24, 0, 6 },
// MZ2_DAEDALUS_BLASTER             145
    { 32.5, -0.8, 10.0 },
// MZ2_MEDIC_BLASTER_2              146
    { 12.1, 5.4, 16.5 },
// MZ2_CARRIER_RAILGUN              147
    { 32, 0, 6 },
// MZ2_WIDOW_DISRUPTOR              148
    { 57.72, 14.50, 88.81 },
// MZ2_WIDOW_BLASTER                149
    { 56,   32, 32 },
// MZ2_WIDOW_RAIL                   150
    { 62, -20, 84 },
// MZ2_WIDOW_PLASMABEAM             151     // PMM - not used!
    { 32, 0, 6 },
// MZ2_CARRIER_MACHINEGUN_L2        152
    { 61,   -32, 12 },
// MZ2_CARRIER_MACHINEGUN_R2        153
    { 61,   32, 12 },
// MZ2_WIDOW_RAIL_LEFT              154
    { 17, -62, 91 },
// MZ2_WIDOW_RAIL_RIGHT             155
    { 68, 12, 86 },
// MZ2_WIDOW_BLASTER_SWEEP1         156         pmm - the sweeps need to be in sequential order
    { 47.5, 56, 89 },
// MZ2_WIDOW_BLASTER_SWEEP2         157
    { 54, 52, 91 },
// MZ2_WIDOW_BLASTER_SWEEP3         158
    { 58, 40, 91 },
// MZ2_WIDOW_BLASTER_SWEEP4         159
    { 68, 30, 88 },
// MZ2_WIDOW_BLASTER_SWEEP5         160
    { 74, 20, 88 },
// MZ2_WIDOW_BLASTER_SWEEP6         161
    { 73, 11, 87 },
// MZ2_WIDOW_BLASTER_SWEEP7         162
    { 73, 3, 87 },
// MZ2_WIDOW_BLASTER_SWEEP8         163
    { 70, -12, 87 },
// MZ2_WIDOW_BLASTER_SWEEP9         164
    { 67, -20, 90 },
// MZ2_WIDOW_BLASTER_100            165
    { -20, 76, 90 },
// MZ2_WIDOW_BLASTER_90             166
    { -8, 74, 90 },
// MZ2_WIDOW_BLASTER_80             167
    { 0, 72, 90 },
// MZ2_WIDOW_BLASTER_70             168     d06
    { 10, 71, 89 },
// MZ2_WIDOW_BLASTER_60             169     d07
    { 23, 70, 87 },
// MZ2_WIDOW_BLASTER_50             170     d08
    { 32, 64, 85 },
// MZ2_WIDOW_BLASTER_40             171
    { 40, 58, 84 },
// MZ2_WIDOW_BLASTER_30             172     d10
    { 48, 50, 83 },
// MZ2_WIDOW_BLASTER_20             173
    { 54, 42, 82 },
// MZ2_WIDOW_BLASTER_10             174     d12
    { 56, 34, 82 },
// MZ2_WIDOW_BLASTER_0              175
    { 58, 26, 82 },
// MZ2_WIDOW_BLASTER_10L            176     d14
    { 60, 16, 82 },
// MZ2_WIDOW_BLASTER_20L            177
    { 59, 6, 81 },
// MZ2_WIDOW_BLASTER_30L            178     d16
    { 58, -2, 80 },
// MZ2_WIDOW_BLASTER_40L            179
    { 57, -10, 79 },
// MZ2_WIDOW_BLASTER_50L            180     d18
    { 54, -18, 78 },
// MZ2_WIDOW_BLASTER_60L            181
    { 42, -32, 80 },
// MZ2_WIDOW_BLASTER_70L            182     d20
    { 36, -40, 78 },
// MZ2_WIDOW_RUN_1                  183
    { 68.4, 10.88, 82.08 },
// MZ2_WIDOW_RUN_2                  184
    { 68.51, 8.64, 85.14 },
// MZ2_WIDOW_RUN_3                  185
    { 68.66, 6.38, 88.78 },
// MZ2_WIDOW_RUN_4                  186
    { 68.73, 5.1, 84.47 },
// MZ2_WIDOW_RUN_5                  187
    { 68.82, 4.79, 80.52 },
// MZ2_WIDOW_RUN_6                  188
    { 68.77, 6.11, 85.37 },
// MZ2_WIDOW_RUN_7                  189
    { 68.67, 7.99, 90.24 },
// MZ2_WIDOW_RUN_8                  190
    { 68.55, 9.54, 87.36 },
// MZ2_CARRIER_ROCKET_1             191
    { 0, 0, -5 },
// MZ2_CARRIER_ROCKET_2             192
    { 0, 0, -5 },
// MZ2_CARRIER_ROCKET_3             193
    { 0, 0, -5 },
// MZ2_CARRIER_ROCKET_4             194
    { 0, 0, -5 },
// MZ2_WIDOW2_BEAMER_1              195
//  72.13, -17.63, 93.77 },
    { 69.00, -17.63, 93.77 },
// MZ2_WIDOW2_BEAMER_2              196
//  71.46, -17.08, 89.82 },
    { 69.00, -17.08, 89.82 },
// MZ2_WIDOW2_BEAMER_3              197
//  71.47, -18.40, 90.70 },
    { 69.00, -18.40, 90.70 },
// MZ2_WIDOW2_BEAMER_4              198
//  71.96, -18.34, 94.32 },
    { 69.00, -18.34, 94.32 },
// MZ2_WIDOW2_BEAMER_5              199
//  72.25, -18.30, 97.98 },
    { 69.00, -18.30, 97.98 },
// MZ2_WIDOW2_BEAM_SWEEP_1          200
    { 45.04, -59.02, 92.24 },
// MZ2_WIDOW2_BEAM_SWEEP_2          201
    { 50.68, -54.70, 91.96 },
// MZ2_WIDOW2_BEAM_SWEEP_3          202
    { 56.57, -47.72, 91.65 },
// MZ2_WIDOW2_BEAM_SWEEP_4          203
    { 61.75, -38.75, 91.38 },
// MZ2_WIDOW2_BEAM_SWEEP_5          204
    { 65.55, -28.76, 91.24 },
// MZ2_WIDOW2_BEAM_SWEEP_6          205
    { 67.79, -18.90, 91.22 },
// MZ2_WIDOW2_BEAM_SWEEP_7          206
    { 68.60, -9.52, 91.23 },
// MZ2_WIDOW2_BEAM_SWEEP_8          207
    { 68.08, 0.18, 91.32 },
// MZ2_WIDOW2_BEAM_SWEEP_9          208
    { 66.14, 9.79, 91.44 },
// MZ2_WIDOW2_BEAM_SWEEP_10         209
    { 62.77, 18.91, 91.65 },
// MZ2_WIDOW2_BEAM_SWEEP_11         210
    { 58.29, 27.11, 92.00 },

// end of table
    { 0.0, 0.0, 0.0 }
};
